// 柯里化演示
// function checkAge(age){
//   let min = 18
//   return age>=min
// }

//普通的纯函数
// function checkAge(min,age){
//   return age>=min
// }
// //函数的柯里化
// function checkAge(min){
//   return function(age){
//     return age>=min
//   }
// }
// es6
let checkAge=min=>age=>age>min
// console.log(checkAge(18, 24))
// console.log(checkAge(22, 24))
console.log(checkAge(18)(20))


//模拟lodash的柯里化方法
function getSum (a, b, c) {
  return a + b + c
}
const curried = curry(getSum)
console.log(curried(1, 2, 3))
console.log(curried(1, 2)(3))

function curry (fn) {//使用递归遍历多有参数。
  return function collectArg (...args) {
    if (args.length < fn.length) {
      return function () {
        // return collectArg(Array.from(args).concat(Array.from(arguments)))
        return collectArg(...args.concat(...arguments))
      }
    }
    return fn(...args)
  }
}

